Portable notebook or laptop personal computers (PCs) have become enormously popular. Portable PC's have traditionally had lower-performance components than desktop PC's. In particular, these notebook PC's have suffered from lower-quality graphics while desktop PC's are more likely to have better graphics.
An extremely compute-intensive use of a PC is the rendering of three-dimensional (3D) objects for display on a two-dimensional display screen. Yet 3D-graphics applications are becoming more popular with computer users and should continue to gain popularity as higher-performance computers emerge.
Three-dimensional objects or surfaces are approximated as connected polygons, usually triangles. Greater detail can be obtained by using a greater number of smaller triangles to approximate the object as well as texture maps to render the surface material type. The 3D pipeline consists of two major segments or processes. The first segment is commonly referred to as Geometry. In turn, Geometry consists of Transformations and Lighting. First, the 3D polygonal database is transformed to image space through the mathematical transformations of translation, rotation, clipping, projection and scaling. Next, lighting and atmospheric effects are added. The second major pipeline segment is the Rasterization process. In turn, this process consists of triangle set-up and pixel rasterization. In a typical Application Interface (API), any or all pipeline segments may be accelerated in hardware. The focus of this invention relates to an improved method for hardware acceleration of the last stage, mainly Pixel Rasterization, henceforth referred to as the Pixel Engine (PE).
The image displayed on the computer's screen is generated from the position and attitude, surface attributes such as color and texture as well as environmental conditions such as lighting and atmosphere. The Geometry process produces image-space triangles described by three vertices and their color, depth, texture and other attributes. The Triangle Set-Up process produces the adjusted pixel positions as well as the attribute gradients. The Pixel Pipe then has the responsibility of generating all the pixel colors within the triangle. It uses the starting values and interpolates across the triangle by means of incremental methods; both linear and non-linear interpolations are required. The final color for each pixel is composited from all the attributes being combined in a manner selected by the application. Thus a large amount of computational work is needed to interpolate and composite the colors of the many pixels within the triangle.
The color of a pixel is designated by the intensity of the red, green, and blue (RGB) color components. Each color component may be encoded as a multi-bit binary value. Other components, such as depth, fog, texture, specular reflectivity, and the blending-factor alpha (.alpha.), are often used. These components can be used for blending, shading, or distance effects and are herein designated by the letter A.
The 3D graphics engine first sets up individual triangles for rendering, performing any transformations necessary. Color, texture and other attribute values and their gradients for each triangle are output from a triangle setup engine (TSE) to the Pixel Pipes. A span engine (SE) "walks" each of the three edges of the triangle, determining endpoint pixel and attribute values where horizontal-line "spans" intersect the triangle edges. Then a raster engine (RE) receives an endpoint for a span and interpolates the attribute values for each pixel on the span. The visible pixels are then written to a frame buffer for display.